﻿//using Microsoft.Extensions.Logging; 
//using System.Text;
//using UtilLibrary.Global;

//namespace UtilLibrary
//{
//    public static partial class Extensions
//    {
//        public static Exception GetOriginalException(this Exception ex)
//        {
//            if (ex.InnerException == null) return ex;

//            return ex.InnerException.GetOriginalException();
//        }
//    }
    
//    public class LogHelper
//    {
//        private static readonly ILogger log =  new ILogger(typeof(LogHelper));

//        public static void Trace(object msg, Exception ex = null)
//        {
//            if (ex == null)
//            {
//                log.Verbose(msg.ToString());
//            }
//            else
//            {
//                log.Verbose(msg + GetExceptionMessage(ex));
//            }
//        }

//        public static void Debug(object msg, Exception ex = null)
//        {
//            if (ex == null)
//            {
//                log.Debug(msg.ToString());
//            }
//            else
//            {
//                log.Debug(msg + GetExceptionMessage(ex));
//            }
//        }

//        public static void Info(object msg, Exception ex = null)
//        {
//            if (ex == null)
//            {
//                log.Information(msg.ToString());
//            }
//            else
//            {
//                log.Information(msg + GetExceptionMessage(ex));
//            }
//        }

//        public static void Warn(object msg, Exception ex = null)
//        {
//            if (ex == null)
//            {
//                log.Warning(msg.ToString());
//            }
//            else
//            {
//                log.Warning(msg + GetExceptionMessage(ex));
//            }
//        }

//        public static void Error(object msg, Exception ex = null)
//        {
//            if (ex == null)
//            {
//                log.Error(msg.ToString());
//            }
//            else
//            {
//                log.Error(msg + GetExceptionMessage(ex));
//            }
//        }

//        public static void Error(Exception ex)
//        {
//            if (ex != null)
//            {
//                log.Error(GetExceptionMessage(ex));
//            }
//        }

//        public static void Fatal(object msg, Exception ex = null)
//        {
//            if (ex == null)
//            {
//                log.Fatal(msg.ToString());
//            }
//            else
//            {
//                log.Fatal(msg + GetExceptionMessage(ex));
//            }
//        }

//        public static void Fatal(Exception ex)
//        {
//            if (ex != null)
//            {
//                log.Fatal(GetExceptionMessage(ex));
//            }
//        }

//        private static string GetExceptionMessage(Exception ex)
//        {
//            string message = string.Empty;
//            if (ex != null)
//            {
//                message += ex.Message;
//                message += Environment.NewLine;
//                Exception originalException = ex.GetOriginalException();
//                if (originalException != null)
//                {
//                    if (originalException.Message != ex.Message)
//                    {
//                        message += originalException.Message;
//                        message += Environment.NewLine;
//                    }
//                }
//                message += ex.StackTrace;
//                message += Environment.NewLine;
//            }
//            return message;
//        }

      
//    }
//}
